The present invention relates to low latency convolution of digital signals and, in particular, describes a highly efficient form of convolution suitable for use on a processor architecture.
The convolution of two signals is an extremely important process in many digital signal processing applications such as audio signal processing, radar signal analysis, video signal processing etc. The convolution process is commonly carried out in the Fourier Domain as it requires reduced computational resources.
Turning now to FIG. 1, there is illustrated the standard Fourier Domain xe2x80x9coverlap and savexe2x80x9d convolution process for convolving an audio signal. The process is more fully set out in the standard text such as xe2x80x9cDigital Signal Processingxe2x80x9d, by John Proakis and Dimitis Manolakis, McMillan Publishing Company, 1992.
In the traditional overlap and save method as illustrated 20 in FIG. 1, the input signal 21 is digitized and divided into N sample blocks 22 with N normally being a power of 2. Similarly, an impulse response of length N 23 is determined normally by taking desired environmental measurements, and padded to length 2N by zeros. A first mapping 24 is applied to the 2N blocks of the impulse response 23 so as to form N complex numbers having real and imaginary coefficients. The FFT is then applied to produce N Frequency coefficients. The step 24 can be carried out once before processing begins and the corresponding frequency domain coefficients 25 stored for later use.
Next, blocks of length 2N of the input audio are taken and again a fast fourier transform is applied so as to determine corresponding frequency domain data 28 corresponding to the 2N real input values. Next, the two sets of data are element-by-element multiplied 30 so as to product frequency domain data 31. An inverse fourier transform is then applied to produce 2N real values with the first N 34 being discarded and the second N 35 becoming the output values 36 for the output audio. The process illustrated in FIG. 1 is well known as a standard frequency domain convolution process.
International PCT Application No. PCT/AU93/00330 entitled xe2x80x9cDigital Filter Having High Accuracy and Efficiencyxe2x80x9d, assigned to Lake DSP Pty Ltd, discloses a convolution filter which extends the aforementioned process so as to provide for an extremely low latency and the ability to perform long convolutions.
Unfortunately, it is often the case, particularly in headtracked audio signal processing applications, that the impulse response coefficients 23 must be rapidly altered whilst an audio input signal is being convolved. Unfortunately, when such alterations are carried out, the output audio signal 36 often contains distracting audible xe2x80x98clicksxe2x80x99 which are highly undesirable.
It is an object of the present invention to provide for a convolution process suitable for utilization in producing cross fades.
In accordance with a first aspect of the present invention, there is provided a method of performing a convolution on an input data stream, the method comprising the steps of: (a) transforming an initial series of input data values into the frequency domain to form initial frequency domain data values; (b) multiplying the frequency domain data values with a set of coefficients so as to form convolved frequency data; (c) transforming the convolved frequency data into a spatial domain so as to form an initial series of output data values; (d) performing steps (a) to (c) on a subsequent series of input data values of the input data stream so as to form a subsequent series of output data values; the subsequent series of input data values overlapping the initial series of input data values; and (e) cross fading overlapping portions of the initial and subsequent output data values.
The initial series of input data values and the subsequent series of input data values data are preferably convolved with different sets of coefficients. The sets of coefficients, in one embodiment, represent impulse response functions.
The cross fading can comprise utilizing a fade up interpolation at an initial end of the output data values and a fade down at a final end of the output data values.